package cn.lili.xiaoran.service.impl;

import cn.hutool.core.bean.copier.BeanCopier;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.xiaoran.entity.LiIndustry;
import cn.lili.xiaoran.entity.LiQuestionnaire;
import cn.lili.xiaoran.entity.dtos.LiQuestionnaireDTO;
import cn.lili.xiaoran.entity.vo.LiQuestionnaireVo;
import cn.lili.xiaoran.mapper.LiQuestionnaireMapper;
import cn.lili.xiaoran.service.LiQuestionnaireService;
import cn.lili.xiaoran.util.QuestionnaireUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Map;
import java.util.Objects;

/**
 * @author LiLang
 * @since 2022/09/21
 */
@Service("liQuestionnaireService")
public class LiQuestionnaireServiceImpl extends ServiceImpl<LiQuestionnaireMapper, LiQuestionnaire> implements LiQuestionnaireService {

    @Resource
    private LiQuestionnaireMapper liQuestionnaireMapper;

    @Override
    public LiQuestionnaireDTO calc(LiQuestionnaireVo vo) {
        LiQuestionnaire po = BeanCopier
                .create(vo, new LiQuestionnaire(),
                        CopyOptions.create().ignoreNullValue()).copy();
        Map<String,Object> map=QuestionnaireUtil.calcScore(po.getEnterpriseType(), vo.getData());
        // 计算积分
        po.setScore((Float) map.get("score"));
        po.setWeidufen(map.get("weidufenshu").toString());
        // 设置用户ID
        AuthUser user = Objects.requireNonNull(UserContext.getCurrentUser());
        po.setUserId(Long.parseLong(user.getId()));
        // 保存问卷
        this.insert(po);
        // 返回积分
        return BeanCopier.create(po, new LiQuestionnaireDTO(),
                CopyOptions.create().ignoreNullValue()).copy();
    }

    /**
     * 新增数据
     *
     * @param LiQuestionnaire 实例对象
     * @return 实例对象
     */
    @Override
    public LiQuestionnaire insert(LiQuestionnaire liQuestionnaire) {
        this.liQuestionnaireMapper.insert(liQuestionnaire);
        return liQuestionnaire;
    }

}